# -*- coding: utf-8 -*-
from five import grok
from zope import schema
from plone.directives import form
from zope.interface import Invalid
from DateTime import DateTime
from plone.indexer import indexer
from plone.app.textfield import RichText
from plone.namedfile.field import NamedImage
from z3c.relationfield.schema import RelationList, RelationChoice
from plone.formwidget.contenttree import ObjPathSourceBinder,ContentTreeFieldWidget

from Products.bpContents import _
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
from plone.formwidget.autocomplete import AutocompleteFieldWidget
from collective.z3cform.widgets.token_input_widget import TokenInputFieldWidget
from Products.ATVocabularyManager import NamedVocabulary
from collective.gtags.field import Tags

class IEvento(form.Schema):
	"""El tipo de contenido GALERIA, se utiliza tanto para crear un espacio 
	donde poner fotos, como una sala o como 
	"""
	cuerpo = RichText(
        	title=_(u"Cuerpo"),
	        description=_(u"Texto principal"),
	)
	start = schema.Datetime(
		title=_(u'Incio de la Actividad'),
		description=_(u"Fecha y hora del comienzo de la actividad"),
    		required=True
	)
	end = schema.Datetime(
		title=_(u'Fin de la Actividad'),
		description=_(u"Fecha y hora de cierre de la Actividad, o si fuera en un rango de actividades, fecha y hora de la última actividad programada"),
		required=True
	)
	esRango = schema.Bool(
        title=u'Mostrar como un rango de eventos.',
        description=_(u"Si la fecha de inicio y fin no transcurren en el mismo día, el sistem mostrará solo el dia de comienzo del evento. Si es necesario completar el calendario con el rango de dias que va, del comienzo al fin, entoces: activar esta casilla.")
	)
	incluyeSabado = schema.Bool(
        title=u'Incluir sábado',
        description=_(u"Si se aplicó la opción de rango y dentro de ese margen se incluye un sábado, es necesario hacerlo explícito, ya que el sistema no lo incluirá automáticamete.")
	)
	relaciones = RelationList(
        title=_(u"Documentos Relacionados"),
        description=_(u"Otros articulos o galerias que complementen el documento actual"),
        value_type=RelationChoice(
            source=ObjPathSourceBinder(),
        ),
        required=False,
    )

@indexer(IEvento)
def startIndexer(obj):
    if obj.start is None:
        return None
    return DateTime(obj.start.isoformat())
grok.global_adapter(startIndexer, name="start")

@indexer(IEvento)
def endDateIndexer(obj):
    if obj.end is None:
        return None
    return DateTime(obj.end.isoformat())
grok.global_adapter(endDateIndexer, name="end")

from Products.bpContents.BaseClassView import BaseClassView
from plone.directives.dexterity import DisplayForm
from Acquisition import aq_inner
import calendar

class View(DisplayForm, BaseClassView):
    grok.context(IEvento)
    grok.require('zope2.View')
    from Products.bpContents import NOM_MESES as nomMeses


    def getCopeteFecha(self):
        """devuelve string para poner de copete"""


        strA="Del 1 al 5 de Marzo, 18hs"
        inicio=self.context.start
        fin=self.context.end
        diaA=DateTime(inicio).day()
        diaB=DateTime(fin).day()
        mesaA=self.nomMeses[int(DateTime(inicio).month())-1]
        mesB=self.nomMeses[int(DateTime(fin).month())-1]

        if(DateTime(inicio).minute()!=0):
            horaIni="%s:%s" %(DateTime(inicio).hour(),DateTime(inicio).minute())
        else:
            horaIni=DateTime(inicio).hour()

        if(DateTime(fin).minute()!=0):
            horaFin="%s:%s" %(DateTime(fin).hour(),DateTime(fin).minute())
        else:
            horaFin=DateTime(fin).hour()


        if mesaA==mesB:
            if diaA==diaB:
                strA="%s de %s a las %shs." %(diaA,mesaA,horaIni)
            else:
                if self.context.esRango:
                    strA="Del %s al %s de %s, %shs." %(diaA,diaB, mesaA,horaIni)
                else:
                    strA="%s y %s de %s a las %shs" %(diaA,diaB, mesaA,horaIni)
        else:
            if self.context.esRango:
                strA="Del %s del %s al %s de %s, a las %shs." %(diaA,mesaA,diaB,mesB,horaIni)
            else:
                strA="%s de %s al %s de %s, a las %shs." %(diaA,mesaA,diaB,mesB,horaIni)

        return strA




